class asyncQueue {
  constructor() {
    this.queue = []; // 用于存储异步任务的队列
    this.isProcessing = false; // 表示当前是否正在处理异步任务
  }

  enqueue(task, ...args) {
    // 将异步任务添加到队列中
    this.queue.push({ task, args });

    // 如果当前没有任务在执行，则开始处理队列
    if (!this.isProcessing) {
      this.processQueue();
    }
  }

  processQueue() {
    // 设置处理状态为 true，表示当前正在处理队列
    this.isProcessing = true;

    // 如果队列为空，则结束处理
    if (this.queue.length === 0) {
      this.isProcessing = false;
      return;
    }

    // 取出队列中第一个任务
    const { task, args } = this.queue.shift();

    // 执行异步任务，并传递参数
    task(...args, () => {
      // 异步任务完成后触发回调，并继续处理队列中的下一个任务
      this.processQueue();
    });
  }
}


export default {
	asyncQueue
}